<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>计算属性</title>
</head>
<script src="vue.js"></script>
<body>
    <div id="app">
        省份： <input type="text" v-model="province"> <br> 
        城市： <input type="text" v-model="city"> <br>
        <p>收信人地址：{{this.address}}</p>
        <p>收信人地址：{{this.address}}</p>
        <p>收信人地址：{{this.address}}</p>
    </div>
    <!-- 计算属性：computed，它也是vm对象的一个成员，他是一个对象
    在computed里，可以定义一些成员，这些成员用来做一些具体操作
    每一个computed里的成员，本质上都是一个function，而且这个function必须有返回值
    定义好了以后，这个computed的成员就可以当做一个字段来使用
    计算属性有2个特点：
    1.只要在声明的成员函数中，所引用到的数据有任何1个发生改变，
    那么就会引发计算属性的重新执行
    2.计算属性的值，会被缓存起来，不管你访问这个计算属性多少次，它都不会引起重新计算
    直到所引用的数据有任何1个发生改变

    这样能有效提高Vue的执行效率
 -->
 <script>
     var vm = new Vue({
         el:'#app',
         data:{
             province:'',
             city:'',
         },
         computed:{
             address:function(){
                 return this.province + '-' + this.city;
             }
         }
     })

    //  watch和computed有什么区别：
        // 1.computed一般被用来做数据绑定
        // 2.watch一般用来做业务逻辑的处理
 </script>
</body>
</html>